package com.yunke.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;

/**
 * VIP卡密实体类
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@TableName("yunke_level_cami")
@Schema(description = "VIP卡密")
public class YunkeLevelCami {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    @Schema(description = "主键ID")
    private Long id;

    /**
     * 卡密编号
     */
    @Schema(description = "卡密编号")
    private String camiCode;

    /**
     * 卡密名称
     */
    @Schema(description = "卡密名称")
    private String camiName;

    /**
     * VIP等级ID
     */
    @Schema(description = "VIP等级ID")
    private Long levelId;

    /**
     * 等级名称
     */
    @Schema(description = "等级名称")
    private String levelName;

    /**
     * 卡密类型：1-月卡 2-季卡 3-年卡 4-永久卡
     */
    @Schema(description = "卡密类型")
    private Integer camiType;

    /**
     * 时长（月）
     */
    @Schema(description = "时长（月）")
    private Integer duration;

    /**
     * 卡密价值
     */
    @Schema(description = "卡密价值")
    private BigDecimal camiValue;

    /**
     * 批次号
     */
    @Schema(description = "批次号")
    private String batchNo;

    /**
     * 生成数量
     */
    @Schema(description = "生成数量")
    private Integer generateCount;

    /**
     * 已使用数量
     */
    @Schema(description = "已使用数量")
    private Integer usedCount;

    /**
     * 剩余数量
     */
    @Schema(description = "剩余数量")
    private Integer remainCount;

    /**
     * 使用用户ID
     */
    @Schema(description = "使用用户ID")
    private Long useUserId;

    /**
     * 使用时间
     */
    @Schema(description = "使用时间")
    private Long useTime;

    /**
     * 使用状态：0-未使用 1-已使用 2-已过期
     */
    @Schema(description = "使用状态")
    private Integer useStatus;

    /**
     * 有效期开始时间
     */
    @Schema(description = "有效期开始时间")
    private Long validStartTime;

    /**
     * 有效期结束时间
     */
    @Schema(description = "有效期结束时间")
    private Long validEndTime;

    /**
     * 生成来源：1-系统生成 2-活动生成 3-管理员生成
     */
    @Schema(description = "生成来源")
    private Integer generateSource;

    /**
     * 生成者ID
     */
    @Schema(description = "生成者ID")
    private Long generatorId;

    /**
     * 生成者类型：1-系统 2-管理员
     */
    @Schema(description = "生成者类型")
    private Integer generatorType;

    /**
     * 分发方式：1-公开发放 2-定向发放 3-活动奖励
     */
    @Schema(description = "分发方式")
    private Integer distributeType;

    /**
     * 使用限制（JSON格式）
     */
    @Schema(description = "使用限制")
    private String useLimit;

    /**
     * 备注信息
     */
    @Schema(description = "备注信息")
    private String remark;

    /**
     * 状态：1-正常 2-禁用 3-已删除
     */
    @Schema(description = "状态")
    private Integer status;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private Long createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private Long updateTime;
} 